package com.yzf.demo.demo.io;

import java.io.*;

/**
 * Created by 于占峰 on 2020/4/5/005.
 * 基于缓冲流的输入输出流  利用了默认为8kb的缓冲区 在写入文件时 会先写入缓冲区 在与磁盘交互 能够有效提高性能
 */
public class BufferOutputInputStreamDemo {

    public static void main(String[] args) {

        try {
            long startTime = System.currentTimeMillis();    //获取开始时间
            //创建缓冲输入流 传入一个输入流
            BufferedInputStream bufferedInputStream =
                    new BufferedInputStream(new FileInputStream("E:/下载/承太郎早期试镜火影录像.flv"));
            int len = 0;
            //byte数组
            byte[] buf = new byte[1024];
            //创建缓冲输出流 传入一个输出流
            BufferedOutputStream bufferedOutputStream =
                    new BufferedOutputStream(new FileOutputStream("G:/456.flv"));

            while ((len = bufferedInputStream.read(buf)) != -1) {
                //写入到磁盘
                bufferedOutputStream.write(buf, 0, len);
                /**
                 *flush 刷新buffer的缓冲区
                 * 如果写的文件没有大于默认的8kb 则不会触发写入磁盘的操作
                 */
                bufferedOutputStream.flush();
//                bufferedOutputStream.close();  close方法也会触发写入磁盘的操作
            }
            long endTime = System.currentTimeMillis();    //获取结束时间
            System.out.println("程序运行时间：" + (endTime - startTime) + "ms");    //输出程序运行时间
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
